package net.servir.capacidades.web.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import net.servir.capacidades.model.Ejecutora;
import net.servir.capacidades.model.Enumerados;
import net.servir.capacidades.model.SegPerfil;
import net.servir.capacidades.model.SegPerfilPermiso;
import net.servir.capacidades.model.Usuario;
import net.servir.capacidades.model.jsp.JspEjecutoraEdicion;
import net.servir.capacidades.model.jsp.JspPerfilEdicion;
import net.servir.capacidades.service.CapacidadesService;
import net.servir.capacidades.service.CensoService;
import net.servir.capacidades.service.MantenimientoService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class PerfilEdicionController {

	@Autowired 
	private CapacidadesService capacidadesService;
	@Autowired 
	private MantenimientoService mantenimientoService;

	@RequestMapping("/perfilEdicion.htm")
	public @ModelAttribute("perfilEdicion")
	JspPerfilEdicion participanteBusqueda(HttpServletRequest request) {
		
		//************************************************************
		// se obtiene el dni de la session activa
		//************************************************************
		HttpSession session = request.getSession();
		String cod_session =session.getId();

		String dniResponsable = null;
		if(session.getAttribute("dni") != null)			
			dniResponsable = session.getAttribute("dni").toString();
		
		//Obtenemos los datos del Usuario
		Usuario usuario = capacidadesService.GetUsuarioIdentificacion(dniResponsable);
		
		if (usuario == null)
			return null;
			
		//************************************************************
		JspPerfilEdicion obj = new JspPerfilEdicion();		
		String accion = null;
		SegPerfil segPerfil= new SegPerfil();
		Integer idPerfil = 0;
		Integer idPermiso = 0;
		Integer idPermisoAdd = 0;
		Integer idRecursoAdd = 0;
		// Atributos basico
		if (request.getParameter("idPerfil") != null && !request.getParameter("idPerfil").equals(""))
			idPerfil = Integer.parseInt(request.getParameter("idPerfil"));
		if (request.getParameter("idPermiso") != null && !request.getParameter("idPermiso").equals(""))
			idPermiso = Integer.parseInt(request.getParameter("idPermiso"));
		if (request.getParameter("idPermisoAdd") != null && !request.getParameter("idPermisoAdd").equals(""))
			idPermisoAdd = Integer.parseInt(request.getParameter("idPermisoAdd"));

		
		accion = request.getParameter("accion");
		// Antes de cargar los valores ejecuto la accion
		
		if (accion.equals("ELIMINARPERMISO"))
		{
			SegPerfilPermiso segPerfilPermiso = new SegPerfilPermiso();
			segPerfilPermiso.setId_perfil(idPerfil);
			segPerfilPermiso.setId_permiso(idPermiso);
			mantenimientoService.eliminarPermiso(segPerfilPermiso);
			obj.setMensaje_usuario("Se eliminó el permiso");
		}
		
		if (accion.equals("AGREGARPERMISO"))
		{
			SegPerfilPermiso segPerfilPermiso = new SegPerfilPermiso();
			segPerfilPermiso.setId_perfil(idPerfil);
			segPerfilPermiso.setId_permiso(idPermisoAdd);
			mantenimientoService.agregarPermiso(segPerfilPermiso);
			obj.setMensaje_usuario("Se agregó el permiso");
		}
		
		obj.setSegRecursos(mantenimientoService.getSegRecursos(idPerfil));
		//obj.setSegPermisos(mantenimientoService.getSegPermisos(idRecurso));
		
		obj.setSegPerfilPermiso(mantenimientoService.getSegPerfilPermiso(idPerfil));
		
		if (accion.equals("REFRESCARPERMISOS"))
		{
			if (request.getParameter("idRecursoAdd") != null && !request.getParameter("idRecursoAdd").equals(""))
				idRecursoAdd = Integer.parseInt(request.getParameter("idRecursoAdd"));
			obj.setSegPermisos(mantenimientoService.getSegPermisos(idRecursoAdd,idPerfil));
			obj.setIdRecurso(idRecursoAdd);
		}
		
		if (accion.equals("INICIO"))
		{
			if (idPerfil == 0)
			{
				segPerfil.setPerfil("");
				segPerfil.setId_perfil(idPerfil);
			}
			else
			{
				segPerfil = mantenimientoService.getSegPerfil(idPerfil);
			}				
		}
		else
		{
			segPerfil.setPerfil(request.getParameter("perfil").toUpperCase());
			segPerfil.setId_perfil(Integer.parseInt(request.getParameter("idPerfil")));
		}
		if (accion.equals("GRABAR"))
		{
			idPerfil = mantenimientoService.grabarSegPerfil(segPerfil);
			segPerfil.setId_perfil(idPerfil);
			obj.setMensaje_usuario("Datos grabados correctamente");
		}
		obj.setSegPerfil(segPerfil);
		return obj;
}
}
